package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 商品信息实体
 */
@Component
public interface GoodsDao {

    //查询当前库存（可根据商品类别、商品编码或名称搜索）
    Page<Goods> listInventorySelect(@Param("codeOrName") String codeOrName, @Param("goodsTypeId") Integer goodsTypeId);

    //查询当前库存（可根据商品类别、商品编码或名称搜索）
    Page<Goods> listSelect(@Param("goodsName") String goodsName,@Param("goodsTypeId") Integer goodsTypeId);

    //新增商品信息实体
    void saveGoods(Goods goods);

    //修改商品信息实体
    void updateGoods(Goods goods);


    //根据id删除商品
    void deleteGoods(Integer goodsId);

    //无库存商品列表展示（可以根据商品名称或编码查询）
    Page<Goods> getNoInventoryQuantity(@Param("nameOrCode") String nameOrCode);

    //有库存商品列表展示（可以根据商品名称或编码查询
    Page<Goods> getHasInventoryQuantity(@Param("nameOrCode") String nameOrCode);

    //添加库存、修改数量或成本价
    void saveStock(@Param("goodsId") Integer goodsId, @Param("inventoryQuantity") Integer inventoryQuantity,@Param("purchasingPrice") double purchasingPrice);

    //根据goodsId
    Goods getGoodsById(Integer goodsId);

    //查询所有 当前库存量 小于 库存下限的商品信息
    List<Goods> listAlarm();


    //删除库存（要判断商品状态 入库、有进货和销售单据的不能删除）
//    void deleteStock(@Param("goodsId") Integer goodsId);
}
